package com.chatmcp.mcprouter.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 服务器日志实体类
 * 记录MCP服务器的请求响应日志
 * 与Go实现完全对齐
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ServerLog implements Serializable {
    
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 会话ID
     */
    private String sessionId;

    /**
     * 请求ID
     */
    private String requestId;

    /**
     * 请求来源
     */
    private String requestFrom;

    /**
     * 服务器UUID
     */
    private String serverUuid;

    /**
     * 服务器键名
     */
    private String serverKey;

    /**
     * 服务器名称
     */
    private String serverName;

    /**
     * 服务器版本
     */
    private String serverVersion;

    /**
     * 服务器配置名称
     */
    private String serverConfigName;

    /**
     * 服务器是否共享进程
     */
    private Boolean serverShareProcess;

    /**
     * 服务器类型
     */
    private String serverType;

    /**
     * 服务器URL
     */
    private String serverUrl;

    /**
     * 服务器启动命令
     */
    private String serverCommand;

    /**
     * 服务器命令哈希
     */
    private String serverCommandHash;

    /**
     * MCP服务器ID
     */
    private String mcpServerId;

    /**
     * 客户端名称
     */
    private String clientName;

    /**
     * 客户端版本
     */
    private String clientVersion;

    /**
     * 协议版本
     */
    private String protocolVersion;

    /**
     * JSONRPC版本
     */
    private String jsonrpcVersion;

    /**
     * 请求方法
     */
    private String requestMethod;

    /**
     * 请求参数
     */
    private String requestParams;

    /**
     * 响应结果
     */
    private String responseResult;

    /**
     * 响应错误
     */
    private String responseError;

    /**
     * 连接时间
     */
    private LocalDateTime connectionTime;

    /**
     * 请求时间
     */
    private LocalDateTime requestTime;

    /**
     * 响应时间
     */
    private LocalDateTime responseTime;

    /**
     * 处理耗时（毫秒）
     */
    private Long costTime;
    
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
    
    /**
     * 表名
     */
    public static String getTableName() {
        return "server_logs";
    }
} 